Skip to content

Asio#582

Closed
AlexInLog wants to merge 2 commits into
v2from
add_asio
Closed

Asio#582
AlexInLog wants to merge 2 commits into
v2from
add_asio

Conversation

@AlexInLog

Copy link
Copy Markdown
Owner

No description provided.

@github-actions

github-actions Bot commented May 21, 2024

Copy link
Copy Markdown
Contributor

BENCHMARK RESULTS (AUTOGENERATED)

ci-ubuntu-gcc

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 303.05 ns 2.16 ns 2.19 ns 0.99
Subscribe empty callbacks to empty observable via pipe operator 312.35 ns 2.16 ns 2.16 ns 1.00

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 692.58 ns 0.31 ns 0.31 ns 1.00
from array of 1 - create + subscribe + current_thread 1027.40 ns 3.42 ns 3.43 ns 1.00
concat_as_source of just(1 immediate) create + subscribe 2244.02 ns 135.50 ns 135.25 ns 1.00
defer from array of 1 - defer + create + subscribe + immediate 772.96 ns 0.31 ns 0.31 ns 1.00
interval - interval + take(3) + subscribe + immediate 2141.05 ns 59.23 ns 59.25 ns 1.00
interval - interval + take(3) + subscribe + current_thread 3115.82 ns 32.43 ns 32.43 ns 1.00
from array of 1 - create + as_blocking + subscribe + new_thread 29254.27 ns 27764.64 ns 27866.66 ns 1.00
from array of 1000 - create + as_blocking + subscribe + new_thread 39340.77 ns 50800.21 ns 50906.47 ns 1.00

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 1092.80 ns 0.31 ns 0.31 ns 1.00
immediate_just+filter(true)+subscribe 843.73 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 999.15 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 860.97 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+first()+subscribe 1235.36 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+last()+subscribe 933.24 ns 0.31 ns 0.31 ns 1.00
immediate_just+take_last(1)+subscribe 1124.28 ns 18.22 ns 18.22 ns 1.00

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 262.89 ns 2.16 ns 2.16 ns 1.00
current_thread scheduler create worker + schedule 366.30 ns 5.55 ns 5.56 ns 1.00
current_thread scheduler create worker + schedule + recursive schedule 794.72 ns 56.92 ns 56.47 ns 1.01

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 855.46 ns 0.31 ns 0.31 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 908.39 ns 0.31 ns 0.31 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 2343.43 ns 159.19 ns 156.73 ns 1.02
immediate_just+buffer(2)+subscribe 1533.55 ns 13.90 ns 13.89 ns 1.00
immediate_just+window(2)+subscribe + subscsribe inner 2372.37 ns 1126.89 ns 1080.35 ns 1.04

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 840.14 ns - - 0.00
immediate_just+take_while(true)+subscribe 847.21 ns 0.31 ns 0.31 ns 1.00

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 1954.08 ns 0.31 ns 0.31 ns 1.00

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 3377.33 ns 182.79 ns 185.41 ns 0.99
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 3689.77 ns 175.40 ns 183.55 ns 0.96
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 147.01 ns 145.20 ns 1.01
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 3539.68 ns 967.06 ns 1130.97 ns 0.86
immediate_just(1) + zip(immediate_just(2)) + subscribe 2093.19 ns 211.92 ns 203.86 ns 1.04

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 34.59 ns 16.88 ns 16.79 ns 1.01

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1347.04 ns 14.20 ns 13.59 ns 1.05
basic sample with immediate scheduler 1363.33 ns 5.55 ns 5.55 ns 1.00

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 928.09 ns 0.31 ns 0.31 ns 1.00

Error Handling Operators

name rxcpp rpp prev rpp ratio
create(on_next(1), on_error())+on_error_resume_next(immediate_just(2)))+subscribe 1051.46 ns 118.96 ns 120.92 ns 0.98

ci-macos

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 1120.93 ns 4.65 ns 3.95 ns 1.18
Subscribe empty callbacks to empty observable via pipe operator 1143.43 ns 4.39 ns 3.85 ns 1.14

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 2223.23 ns 0.27 ns 0.23 ns 1.15
from array of 1 - create + subscribe + current_thread 3099.32 ns 39.21 ns 34.83 ns 1.13
concat_as_source of just(1 immediate) create + subscribe 6151.22 ns 380.22 ns 335.80 ns 1.13
defer from array of 1 - defer + create + subscribe + immediate 2230.91 ns 0.27 ns 0.24 ns 1.13
interval - interval + take(3) + subscribe + immediate 5745.47 ns 130.23 ns 114.58 ns 1.14
interval - interval + take(3) + subscribe + current_thread 8784.47 ns 121.86 ns 95.76 ns 1.27
from array of 1 - create + as_blocking + subscribe + new_thread 112073.10 ns 112372.45 ns 82825.43 ns 1.36
from array of 1000 - create + as_blocking + subscribe + new_thread 128205.71 ns 117616.50 ns 94584.50 ns 1.24

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 3233.37 ns 0.27 ns 0.23 ns 1.14
immediate_just+filter(true)+subscribe 2405.90 ns 0.26 ns 0.23 ns 1.13
immediate_just(1,2)+skip(1)+subscribe 3091.95 ns 0.26 ns 0.23 ns 1.13
immediate_just(1,1,2)+distinct_until_changed()+subscribe 2340.76 ns 0.53 ns 0.47 ns 1.13
immediate_just(1,2)+first()+subscribe 3591.94 ns 0.26 ns 0.23 ns 1.13
immediate_just(1,2)+last()+subscribe 2706.14 ns 0.26 ns 0.23 ns 1.13
immediate_just+take_last(1)+subscribe 3425.16 ns 80.55 ns 71.51 ns 1.13

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 962.36 ns 4.66 ns 4.14 ns 1.13
current_thread scheduler create worker + schedule 1343.40 ns 44.65 ns 39.20 ns 1.14
current_thread scheduler create worker + schedule + recursive schedule 2318.53 ns 239.13 ns 203.01 ns 1.18

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 2460.91 ns 0.29 ns 0.23 ns 1.25
immediate_just+scan(10, std::plus)+subscribe 2864.62 ns 0.55 ns 0.47 ns 1.17
immediate_just+flat_map(immediate_just(v*2))+subscribe 5993.63 ns 460.52 ns 399.39 ns 1.15
immediate_just+buffer(2)+subscribe 2852.96 ns 81.80 ns 71.43 ns 1.15
immediate_just+window(2)+subscribe + subscsribe inner 6011.65 ns 2671.83 ns 2277.93 ns 1.17

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 2432.35 ns - - 0.00
immediate_just+take_while(true)+subscribe 2513.55 ns 0.27 ns 0.23 ns 1.16

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 5489.84 ns 0.26 ns 0.23 ns 1.13

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 9574.91 ns 553.23 ns 437.08 ns 1.27
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 10762.45 ns 566.97 ns 441.34 ns 1.28
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 554.46 ns 475.14 ns 1.17
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 9609.99 ns 2225.28 ns 1919.79 ns 1.16
immediate_just(1) + zip(immediate_just(2)) + subscribe 8581.69 ns 1015.33 ns 846.34 ns 1.20

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 84.77 ns 57.10 ns 49.25 ns 1.16

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 3127.63 ns 79.39 ns 70.54 ns 1.13
basic sample with immediate scheduler 3141.01 ns 15.87 ns 13.99 ns 1.13

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 2665.85 ns 0.26 ns 0.23 ns 1.13

Error Handling Operators

name rxcpp rpp prev rpp ratio
create(on_next(1), on_error())+on_error_resume_next(immediate_just(2)))+subscribe 7344.35 ns 4590.21 ns 4061.20 ns 1.13

ci-ubuntu-clang

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 268.15 ns 0.88 ns 0.88 ns 1.00
Subscribe empty callbacks to empty observable via pipe operator 281.97 ns 0.88 ns 0.88 ns 1.00

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 559.41 ns 0.45 ns 0.31 ns 1.46
from array of 1 - create + subscribe + current_thread 801.28 ns 4.01 ns 4.01 ns 1.00
concat_as_source of just(1 immediate) create + subscribe 2334.59 ns 135.93 ns 135.34 ns 1.00
defer from array of 1 - defer + create + subscribe + immediate 773.77 ns 0.31 ns 0.31 ns 1.00
interval - interval + take(3) + subscribe + immediate 2230.14 ns 58.26 ns 58.31 ns 1.00
interval - interval + take(3) + subscribe + current_thread 3192.67 ns 31.10 ns 30.88 ns 1.01
from array of 1 - create + as_blocking + subscribe + new_thread 29723.66 ns 28176.64 ns 28083.17 ns 1.00
from array of 1000 - create + as_blocking + subscribe + new_thread 36090.43 ns 32343.18 ns 35967.78 ns 0.90

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 1153.53 ns 0.31 ns 0.31 ns 1.00
immediate_just+filter(true)+subscribe 848.56 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 1074.06 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 871.76 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+first()+subscribe 1360.23 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+last()+subscribe 996.33 ns 0.31 ns 0.31 ns 1.00
immediate_just+take_last(1)+subscribe 1196.13 ns 0.31 ns 0.31 ns 1.00

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 280.20 ns 0.88 ns 0.88 ns 1.00
current_thread scheduler create worker + schedule 403.20 ns 4.63 ns 4.63 ns 1.00
current_thread scheduler create worker + schedule + recursive schedule 850.11 ns 55.80 ns 56.82 ns 0.98

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 838.05 ns 0.31 ns 0.31 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 961.37 ns 0.62 ns 0.62 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 2259.27 ns 139.61 ns 137.42 ns 1.02
immediate_just+buffer(2)+subscribe 1512.96 ns 13.59 ns 13.90 ns 0.98
immediate_just+window(2)+subscribe + subscsribe inner 2451.10 ns 903.31 ns 910.14 ns 0.99

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 843.20 ns - - 0.00
immediate_just+take_while(true)+subscribe 844.46 ns 0.31 ns 0.31 ns 1.00

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 1942.54 ns 0.31 ns 0.31 ns 1.00

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 3338.92 ns 161.86 ns 159.53 ns 1.01
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 3757.10 ns 148.57 ns 145.96 ns 1.02
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 142.95 ns 142.29 ns 1.00
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 3414.20 ns 850.29 ns 859.84 ns 0.99
immediate_just(1) + zip(immediate_just(2)) + subscribe 2220.20 ns 210.18 ns 208.74 ns 1.01

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 52.23 ns 18.18 ns 18.57 ns 0.98

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1293.29 ns 12.04 ns 12.04 ns 1.00
basic sample with immediate scheduler 1306.60 ns 5.86 ns 5.86 ns 1.00

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 981.23 ns 0.31 ns 0.31 ns 1.00

Error Handling Operators

name rxcpp rpp prev rpp ratio
create(on_next(1), on_error())+on_error_resume_next(immediate_just(2)))+subscribe 1049.12 ns 135.46 ns 136.65 ns 0.99

ci-windows

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 576.13 ns 4.67 ns 4.01 ns 1.16
Subscribe empty callbacks to empty observable via pipe operator 587.62 ns 4.71 ns 4.01 ns 1.17

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 1166.81 ns 4.93 ns 4.93 ns 1.00
from array of 1 - create + subscribe + current_thread 1432.38 ns 15.75 ns 15.74 ns 1.00
concat_as_source of just(1 immediate) create + subscribe 3817.47 ns 172.35 ns 170.18 ns 1.01
defer from array of 1 - defer + create + subscribe + immediate 1212.36 ns 4.94 ns 4.93 ns 1.00
interval - interval + take(3) + subscribe + immediate 3318.24 ns 134.14 ns 133.66 ns 1.00
interval - interval + take(3) + subscribe + current_thread 4130.58 ns 52.61 ns 52.56 ns 1.00
from array of 1 - create + as_blocking + subscribe + new_thread 124000.00 ns 116522.22 ns 114880.00 ns 1.01
from array of 1000 - create + as_blocking + subscribe + new_thread 132644.44 ns 133300.00 ns 133833.33 ns 1.00

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 1855.45 ns 12.87 ns 12.86 ns 1.00
immediate_just+filter(true)+subscribe 1362.65 ns 12.37 ns 11.71 ns 1.06
immediate_just(1,2)+skip(1)+subscribe 1776.48 ns 13.02 ns 13.00 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 1394.85 ns 15.95 ns 15.81 ns 1.01
immediate_just(1,2)+first()+subscribe 2119.50 ns 12.96 ns 12.63 ns 1.03
immediate_just(1,2)+last()+subscribe 1505.72 ns 13.80 ns 14.09 ns 0.98
immediate_just+take_last(1)+subscribe 2100.91 ns 59.29 ns 61.14 ns 0.97

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 490.02 ns 6.48 ns 6.48 ns 1.00
current_thread scheduler create worker + schedule 667.56 ns 13.23 ns 13.08 ns 1.01
current_thread scheduler create worker + schedule + recursive schedule 1089.68 ns 103.12 ns 103.19 ns 1.00

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 1351.99 ns 12.34 ns 11.11 ns 1.11
immediate_just+scan(10, std::plus)+subscribe 1469.32 ns 21.59 ns 21.27 ns 1.01
immediate_just+flat_map(immediate_just(v*2))+subscribe 3574.54 ns 220.84 ns 222.18 ns 0.99
immediate_just+buffer(2)+subscribe 2338.22 ns 63.36 ns 64.47 ns 0.98
immediate_just+window(2)+subscribe + subscsribe inner 4094.53 ns 1298.52 ns 1213.70 ns 1.07

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 1339.81 ns 11.45 ns 11.45 ns 1.00
immediate_just+take_while(true)+subscribe 1351.41 ns 12.37 ns 11.72 ns 1.06

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 3270.07 ns 7.09 ns 7.09 ns 1.00

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 6059.88 ns 231.66 ns 249.23 ns 0.93
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 5859.65 ns 221.69 ns 225.02 ns 0.99
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 233.84 ns 231.12 ns 1.01
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 5482.86 ns 945.52 ns 950.19 ns 1.00
immediate_just(1) + zip(immediate_just(2)) + subscribe 3923.29 ns 538.34 ns 532.19 ns 1.01

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 37.05 ns 25.59 ns 26.84 ns 0.95

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1939.23 ns 58.22 ns 58.41 ns 1.00
basic sample with immediate scheduler 1903.31 ns 36.75 ns 36.75 ns 1.00

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 1496.00 ns 19.97 ns 19.95 ns 1.00

Error Handling Operators

name rxcpp rpp prev rpp ratio
create(on_next(1), on_error())+on_error_resume_next(immediate_just(2)))+subscribe 1949.41 ns 335.98 ns 332.61 ns 1.01

@iSplasher

Copy link
Copy Markdown

Hello, I'm currently interested in this Asio integration, are there any ways for me to help?

@AlexInLog

Copy link
Copy Markdown
Owner Author

Hi @iSplasher !
Thank you a lot for the offer of help!
To be honest i can't find enough time to implement all recent requested things (grpc/asio and some operators) so it just delayed till completion other things. If you want, you can implement logic by your own and send PR. I'm not very familiar with asio so it could help me a lot if you are good at it! I would provide sufficient feedback/comments during PR to implement it better in terms of RPP. It can be incremental process (you can write small pieces inside your own PR, get some comments/feedback and write some extra things and etc till it would be completed =))

How can i help you to help me? =)

@iSplasher

Copy link
Copy Markdown

Great, that's much of what I wanted to know. I'll clone this PR and try to implement it. I'm in the middle of exams so progress will be slow, that means you don't need to wait for me :)

@AlexInLog

Copy link
Copy Markdown
Owner Author

Great, that's much of what I wanted to know. I'll clone this PR and try to implement it. I'm in the middle of exams so progress will be slow, that means you don't need to wait for me :)

Yeah, sure, you are welcome to ask anything =) (BTW: rpp has discord server, you can join and ask anything there). Good luck with exams and I'm pretty sure you would implement it a lot faster than me =D

@sonarqubecloud

Copy link
Copy Markdown

Quality Gate Passed Quality Gate passed

Issues
0 New issues
0 Accepted issues

Measures
0 Security Hotspots
No data about Coverage
0.0% Duplication on New Code

See analysis details on SonarCloud

@AlexInLog

Copy link
Copy Markdown
Owner Author

Closing due to #627

@AlexInLog AlexInLog closed this Aug 30, 2024
@AlexInLog AlexInLog deleted the add_asio branch September 5, 2024 14:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants